x86/vMSI-X: fix qword write covering vector control field
authorJan Beulich <jbeulich@suse.com>
Fri, 8 Apr 2016 20:33:17 +0000 (22:33 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 8 Apr 2016 20:33:17 +0000 (22:33 +0200)
Along with using the upper 32 bits of the written value, the address
also needs advancing, so that msix_write_completion() will use the
correct address for re-invocation of msixtbl_write().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/hvm/vmsi.c

index 58b16c3bfc09fcd0b6b15a704dfc82a8c9dee920..d450a3c6bbe6458c59611d49158f6a1e1f3ecd0d 100644 (file)
@@ -295,6 +295,7 @@ static int msixtbl_write(struct vcpu *v, unsigned long address,
         if ( len != 8 || !index )
             goto out;
         val >>= 32;
+        address += 4;
     }
 
     /* Exit to device model when unmasking and address/data got modified. */